<?php


namespace app\sports\bifen\service;

use think\Exception;
use app\common\HTTP;
use think\facade\Log;
use app\sports\bifen\model\BifenModel;
use app\common\InstanceTrait;
class BifenCaiji
{
    private $user = '';
    private  $secret ='';
//    接口名:足球即时比分 --
//    接口频次:1s/次 无限制
    private $url = 'open.sportnanoapi.com/api/sports/football/match/live';

    protected function __construct()
    {
        $this->user = Env::get('nami.user');
        $this->secret = Env::get('nami.secret');
    }


    public function Exexs(){
        try{
         $bifenressult = json_decode(HTTP::getInstance()->doGet($this->url."?user=$this->user&secret=$this->secret"), true);

    //        数据结构
            $data=[
                [
                    2313858,//纳米比赛id
                    1,//比赛状态,详见状态码->足球比赛状态
                    [
                        0,//主队常规时间比分(含补时)
                        0,//主队半场比分(中场前为0)
                        0,//主队红牌
                        0,//主队黄牌
                        -1,//主队角球，-1表示没有角球数据
                        0,//主队加时比分(含常规时间比分),加时赛才有
                        0,//主队点球大战比分(不含常规时间比分),点球大战才有
                    ],
                    [
                        0,//客队常规时间比分(含补时)
                        0,//客队半场比分(中场前为0)
                        0,//客队红牌
                        0,//客队黄牌
                        -1,//客队角球,-1表示没有角球数据
                        0,//客队加时比分(含常规时间比分),加时赛才有
                        0//客队点球大战比分(不含常规时间比分),点球大战才有
                    ],
                    1516197600,//开球时间戳，可能是上/下半场开球时间(根据比赛状态判断)
                    ""//备注信息
                ]
            ];
    //       思路:
    //       1.要先判断是否在数据库中存在,先获取所有返回数据的纳米的id
    //       2.根据返回的纳米id,查询数据库让他返回纳米的集合
    //       3.两层foreach,判断是否存在,存在的及更新,在还需要判断比赛状态,不存在的及添加到一个数组中,最后一次性添加到数据库中

            $bifennamid=[];
            foreach ($bifenressult as $value){
                $bifennamid[] = $value[0];
            }
    //        查询数据库
            $bifenmodel = BifenModel::getInstance()->BifenQueryIn($bifennamid);

    //        批量添加数据
            $bifenall = [];
            foreach ($bifenressult as $value){
                    if (in_array($value[0],$bifenmodel)){
    //                 存在的,更新
                        $data =[
                            'nami_match_id' => $value[0],  //纳米id
                            'status'        => $value[1],  //比赛状态
                            'time'          => $value[4],  //开球时间
                            'left_bifen'    => $value[2][0], //主队常规时间比分(含补时)
                            'right_bifen'   => $value[3][0], //客队常规时间比分(含补时)
                            'left_jiao'     => $value[2][4], //主队的角球
                            'right_jiao'    => $value[3][4], //客队的角球
                            'left_ban_bifen'=> 0, //主队的半场球
                            'right_ban_bifen'=> 0, //客队的半场球
                            'update_time'    => date('Y-m-d H:i:s',time()),

                        ];
    //                    在次判断,比赛状态,如果比赛状态为中场(状态码为3),就需要增加半场的比分数据
                        if ($value[1]==3){
                            $data['left_ban_bifen'] =  $value[2][1]; //主队的半场球
                            $data['right_ban_bifen'] =  $value[3][1]; //客队的半场球
                        }
    //                    更新数据
                        BifenModel::getInstance()->UpdataBifen($data);
                    }else{
    //                    需要添加的数据
                        $bifenall[]=[
                            'nami_match_id'     =>$value[0],
                            'status'        => $value[1],  //比赛状态
                            'time'          => $value[4],  //开球时间
                            'left_bifen'    => $value[2][0], //主队常规时间比分(含补时)
                            'right_bifen'   => $value[3][0], //客队常规时间比分(含补时)
                            'left_jiao'     => $value[2][4], //主队的角球
                            'right_jiao'    => $value[3][4], //客队的角球
                            'left_ban_bifen'=> 0, //主队的半场球
                            'right_ban_bifen'=> 0, //客队的半场球
                            'update_time'    => date('Y-m-d H:i:s',time()),
                            'create_time'    => date('Y-m-d H:i:s',time()),
                        ];
                    }
            }
             if (isset($bifenall) && (!empty($bifenall))){
                 BifenModel::getInstance()->InsertCompanyAll($bifenall);
             }
            Log::log('info','比分采集完成写入');
        }catch(Exception $e){
            $error = json_encode([
                'msg' => $e->getMessage(),
                'line' => $e->getLine(),
                'code' => $e->getCode(),
            ],JSON_UNESCAPED_UNICODE);
            Log::error('比分采集错误BifenCaiji:'.$error);
            return [];
        }
    }
}